package com.itlong.cloud.app.service;

import com.itlong.cloud.POJO.DTO.app.AppApplyRoomCertificationDTO;
import com.itlong.cloud.POJO.DTO.app.AppCallLiftSaveDTO;
import com.itlong.cloud.POJO.VO.MessageVO;
import com.itlong.cloud.POJO.VO.app.AppCallElevatorRecordVO;
import com.itlong.cloud.POJO.VO.app.AppElevatorFloorSimpleVO;
import com.itlong.cloud.POJO.VO.app.AppRoomApplyLogVO;
import com.itlong.cloud.utils.page.Page;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *     新版APP的首页版块服务层接口
 * </desc>
 *
 * @createDate 2017/9/30
 */
public interface IAppHomeService {

    /**
     * <desc>
     *      APP端_首页版块根据房间ID获取房间业主的电话号码
     * </desc>
     * @param roomId 房间ID
     * @return
     * @throws Exception
     * @createDate 2017/9/30
     * @author cuiduanwu
     */
    String getOwnerPhoneNumber(String roomId) throws  Exception;

    /**
     * <desc>
     *      根据房间编号获取房间类型
     * </desc>
     * @param roomId 房间ID
     * @return
     * @throws Exception
     * @createDate 2019/5/21
     * @author Qiang.S
     */
    String getRoomTypeByroomId(String roomId) throws  Exception;


    /**
     * <desc>
     *     APP端_首页版块,用户提交房屋认证申请
     * </desc>
     * @param appApplyRoomCertificationDTO 用户提交申请房屋认证数据
     * @return
     * @createDate 2017/9/30
     * @author cuiduanwu
     */
    MessageVO applyRoomCertification(AppApplyRoomCertificationDTO appApplyRoomCertificationDTO) throws  Exception;


    /**
     * <desc>
     *      获取房间申请记录。
     * <desc/>
     *
     * @param  projectId 项目编号
     * @param  userId  用户ID
     * @param  pageNum 请求页
     * @return
     * @author shengen.T
     * @createDate 2018-03-27
     */
    Page<AppRoomApplyLogVO> getApplyRoomLog(String projectId, String userId, String pageNum) throws Exception;

    /**
     * <desc>
     *      保存呼梯记录。
     * <desc/>
     *
     * @param  saveDTO 呼梯记录保存对象
     * @return
     * @author shengen.T
     * @createDate 2018-04-02
     */
    Integer saveCallLiftRecord(AppCallLiftSaveDTO saveDTO) throws Exception;


    /**
     * <desc>
     *      获取呼梯记录。
     * <desc/>
     *
     * @param  userId 用户ID
     * @param  deviceUnique 设备唯一ID
     * @return
     * @author shengen.T
     * @createDate 2018-04-03
     */
    List<AppCallElevatorRecordVO> getCallElevatorRecord(String userId, String deviceUnique) throws Exception;


    /**
     * <desc>
     *      删除呼梯记录。
     * <desc/>
     *
     * @param  userId 用户Id
     * @param  deviceUnique 设备唯一Id
     * @param  projectId 项目编号
     * @return
     * @author shengen.T
     * @createDate 2018-04-04
     */
    Integer deleteCallElevatorRecord(String userId,String deviceUnique,String projectId) throws Exception;


     /**
      * <desc>
      *      取消预约呼梯。
      * <desc/>
      *
      * @param  userId 用户Id
      * @param  deviceUnique 设备唯一Id
      * @param  projectId 项目编号
      * @return
      * @author shengen.T
      * @createDate 2018-04-11
      */
    Integer cancelCallLift(String userId,String deviceUnique,String projectId) throws Exception;


     /**
      * <desc>
      *      获取真实楼层信息。
      * <desc/>
      *
      * @param deviceUnique 设备唯一编号
      * @param fromId 出发楼层ID
      * @param toId 目标楼层ID
      * @return
      * @author shengen.T
      * @createDate 2018-04-12
      */
    AppElevatorFloorSimpleVO getRealFloorInfo(String deviceUnique,String fromId,String toId) throws Exception;

    /**
     * <desc>
     *      获取楼层权限标识
     * <desc/>
     *
     * @param deviceUnique 设备唯一编号
     * @param fromId 出发楼层名称
     * @param toId 到达楼层名称
     * @return
     * @author Jiaqi.X
     * @createDate 2018/11/29
     */
    Map<String,Object> getNaturalFloor(String deviceUnique,String fromId,String toId) throws Exception;

    /**
     * <desc>
     *      设备验证(梯控)。
     * <desc/>
     *
     * @param projectId 项目编号
     * @param deviceId 项目ID
     * @return
     * @author Qiang.S
     * @createDate 2018-05-14
     */
    Integer elevatorAuthorityCheck(String projectId,String deviceId) throws Exception;

    /**
     * <desc>
     *      设备验证(门禁)。
     * <desc/>
     *
     * @param projectId 项目编号
     * @param deviceId 项目ID
     * @return
     * @author Qiang.S
     * @createDate 2018-05-14
     */
    Integer entranceAuthorityCheck(String projectId,String deviceId) throws Exception;

    /**
     * <desc>
     *      登陆验证。
     * <desc/>
     *
     * @param ID 账号
     * @param password 密码
     * @return
     * @author Qiang.S
     * @createDate 2018-05-14
     */
    Integer engineerLoginVerify(String ID,String password) throws Exception;

    /**
     * <desc>
     *      批量获取真实楼层信息。
     * <desc/>
     *
     * @param deviceUnique 设备唯一编号
     * @param floorString 楼层端子列表
     * @return
     * @author shengen.T
     * @createDate 2018-05-18
     */
    String batchGetRealFloorList(String deviceUnique,String floorString) throws Exception;

    /**
     * <desc>
     *      检测用户是否在项目下。
     * <desc/>
     *
     * @param userId 用户编号
     * @param projectId 项目编号
     * @return
     * @author shengen.T
     * @createDate 2018-05-29
     */
    Map<String,Object> checkUserInProject(String userId, String projectId);

    /**
     * <desc>
     *      根据人脸获取访客名称。
     * <desc/>
     *
     * @param userId 用户编号
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2019-05-16
     */
    String getVisitorName(String userId, String projectId);
}
